/*
 * 注意：
 * 1. 所有的JS接口只能在公众号绑定的域名下调用，公众号开发者需要先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。
 * 2. 如果发现在 Android 不能分享自定义内容，请到官网下载最新的包覆盖安装，Android 自定义分享接口需升级至 6.0.2.58 版本及以上。
 * 3. 完整 JS-SDK 文档地址：http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html
 * 4. 参考网页授权获取用户基本信息
 * http://mp.weixin.qq.com/wiki/4/9ac2e7b1f1d22e9e57260f6553822520.html
 *
 * 如有问题请通过以下渠道反馈：
 * 邮箱地址：weixin-open@qq.com
 * 邮件主题：【微信JS-SDK反馈】具体问题
 * 邮件内容说明：用简明的语言描述问题所在，并交代清楚遇到该问题的场景，可附上截屏图片，微信团队会尽快处理你的反馈。
**
* 在需要调用JS接口的页面引入如下JS文件，
* （支持https）：http://res.wx.qq.com/open/js/jweixin-1.0.0.js
*  <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
*  
* 2015-01-30 modify by wayne
* 2016-04-07 modify by chan
* 扩展微信 js
 */

var wechat = {};
(function () {
	
	wechat.defaultCfg = {
		path:''
	};
	
	wechat.init = function (cfg) {
        var self = this;
        wechat.cfg = $.extend(wechat.defaultCfg, cfg);
        
    };
    
    /** 第一步：用户同意授权，获取code */
    //如果用户同意授权，页面将跳转至 redirect_uri/?code=CODE&state=STATE。若用户禁止授权，则重定向后不会带上code参数，仅会带上state参数redirect_uri?state=STATE
    //snsapi_userinfo 网页授权获取openid 头像 昵称
    //snsapi_base 静默获取openid
    wechat.getCode = function(appid,isonly){
		var redirect_uri = window.location.href;  
		var wx_oauth2_url = "https://open.weixin.qq.com/connect/oauth2/authorize";
		var scope = "snsapi_userinfo";	
		if(isonly){
			scope = "snsapi_base";		
		}
		var param = "?appid="+appid+"&redirect_uri="+encodeURIComponent(redirect_uri)+"&response_type=code&scope="+scope+"&state=wnz#wechat_redirect"
		var url = wx_oauth2_url + param;
        window.location.replace(url);
    }
    
    /** 
     第二步：通过code换取网页授权access_token
     */
    //这个access_token属于网页授权凭证和 基础支持中token不一样（该access_token用于调用其他接口,如菜单新建等）
    //获取code后，请求以下链接获取access_token： 
    //https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
    //参数1: corpid
	//参数2: appid
    //参数3: 表示是否静默获取, 
    //参数4: 设置回调函数，接收微信传递的数据
    wechat.getOpenid = function(corpid,appid,isonly,callback){
    	
    	//从url上获取code参数
    	var code = getUrlParam("code");
    	if(code == null || code == undefined){	
    		wechat.getCode(appid,isonly);
    	}else{
    		var url = wechat.cfg.path+"/wechat/getOpenidByCode";
        	$.ajax({
        		url:url,
        		type:'post',
        		data:{
        			corpid: corpid,
        			code:code, 
        			isonly:isonly,
        			ts:(new Date()).getTime()
        		},
        		dataType:"json",
                success:function(data){
                	callback(data);
                },
                error:function(){
                	return {errcode:"01", errmsg:"获取公众号的appid失败!"}
                }     
        	})
    	}
    	//else end
    }
    
})(jQuery);

/**
 *获取url上面的参数值
 *name 参数名
 *return 参数值
*/  
function getUrlParam(name){
    var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
    var r = window.location.search.substr(1).match(reg);  //匹配目标参数
    if (r!=null) return unescape(r[2]); return null; //返回参数值
};


/**
 *判断是否是微信浏览器
 * @author Bill
 * @version 1.0
 * @Since  2013-12-18
 */ 
function isWeixin(){
	var ua = navigator.userAgent.toLowerCase();
	if(ua.match(/MicroMessenger/i)=="micromessenger") {
		return true;
 	} else {
		return false;
	}
}

/**
 *判断是否是iPhone手机
 * @author Bill
 * @version 1.0
 * @Since  2013-12-18
 */ 
function isIphone(){
	var ua = navigator.userAgent.toLowerCase();
	if(ua.match(/iPhone/i)=="iphone") {
		return true;
 	} else {
		return false;
	}
}

/**
 *判断是否是Android手机
 * @author Bill
 * @version 1.0
 * @Since  2013-12-18
 */ 
function isAndroid(){
	var ua = navigator.userAgent.toLowerCase();
	if(ua.match(/Android/i)=="android") {
		return true;
 	} else {
		return false;
	}
}


//设置微信参数
function setwx_config(appId,timestamp,nonceStr,signature){
	/*
	 * 注意：
	 * 1. 所有的JS接口只能在公众号绑定的域名下调用，公众号开发者需要先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。
	 * 2. 如果发现在 Android 不能分享自定义内容，请到官网下载最新的包覆盖安装，Android 自定义分享接口需升级至 6.0.2.58 版本及以上。
	 * 3. 常见问题及完整 JS-SDK 文档地址：http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html
	 *
	 * 开发中遇到问题详见文档“附录5-常见错误及解决办法”解决，如仍未能解决可通过以下渠道反馈：
	 * 邮箱地址：weixin-open@qq.com
	 * 邮件主题：【微信JS-SDK反馈】具体问题
	 * 邮件内容说明：用简明的语言描述问题所在，并交代清楚遇到该问题的场景，可附上截屏图片，微信团队会尽快处理你的反馈。
	 */
	 wx.config({
	      debug: false,// true|false开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
	      appId: appId,// 必填，公众号的唯一标识
	      timestamp: timestamp,// 必填，生成签名的时间戳
	      nonceStr: nonceStr,// 必填，生成签名的随机串
	      // 必填，签名，见附录1
	      signature: signature,
	   	  // 必填，需要使用的JS接口列表，所有JS接口列表见附录2
	      jsApiList: [
	        'checkJsApi',
	        'onMenuShareTimeline',
	        'onMenuShareAppMessage',
	        'onMenuShareQQ',
	        'onMenuShareWeibo',
	        'hideMenuItems',
	        'showMenuItems',
	        'hideAllNonBaseMenuItem',
	        'showAllNonBaseMenuItem',
	        'translateVoice',
	        'startRecord',
	        'stopRecord',
	        'onRecordEnd',
	        'playVoice',
	        'pauseVoice',
	        'stopVoice',
	        'uploadVoice',
	        'downloadVoice',
	        'chooseImage',
	        'previewImage',
	        'uploadImage',
	        'downloadImage',
	        'getNetworkType',
	        'openLocation',
	        'getLocation',
	        'hideOptionMenu',
	        'showOptionMenu',
	        'closeWindow'
	        /**'scanQRCode',
	        'chooseWXPay',
	        'openProductSpecificView'
	        'addCard',
	        'chooseCard',
	        'openCard'**/
	      ]
	  });
}


//异步获取微信jS-SDK 参数
function getJsApSign(getJsUrl,reurl,corpid,appid){
	$.ajax({
		url:getJsUrl+"/wechat/getJsApSign/"+corpid,
		type:"GET",
		data:{
			reurl:reurl,
			ts:(new Date()).getTime()
		},
		success:function(data){
			//提交失败
			if(data.status=='0'){
				alert("获取企业微信配置失败！")
				return;
			}
			//提交成功
			else if(data.status=='1'){
				//设置微信参数
				setwx_config(appid,data.timestamp,data.nonceStr,data.signature);
			}
			//生成JS-SDK使用权限签名算法出错
			else if(data.status=='-1'){
				//alert("生成JS-SDK使用权限签名算法出错");
				alert("获取企业微信配置失败！")
				return;
			}
			else{
				alert("获取企业微信配置失败！")
				return;
				//alert("提交失败");
			}
		},
		error:function(){
			//alert("获取企业微信配置失败！")
			return;
			//alert("提交失败");
		}   
	});
};

//微信分享
function wx_Share(path,reurl,corpid,appid,shareData){
	/**
	var getJsUrl='http://order.letsun.com.cn/';
	var corpid = '91';//订阅号
	var wxappid = "wx02756e6ee0f837c1";
	**/
	//wxJs.setPrefix(getJsUrl);
	//异步获取微信jS-SDK 参数
	getJsApSign(path,reurl,corpid,appid);

	//微信分享 jS
	wx.ready(function () {
		if(shareData!=null){
			wx.showOptionMenu();
	
		  	wx.onMenuShareAppMessage(shareData);
		  	wx.onMenuShareTimeline(shareData);
		}else{
			//js-sdk  屏蔽分享按钮 
			wx.hideOptionMenu();
		}
		
	});
};


